'''
#1、简述面向对象程序设计的概念及类和对象的关系，在Python语言中如何声明类和定义对象？
面向对象程序设计的一个关键性概念：将数据以及对数据的操作封装在一起，组成一个相互依存、不可分割的整体，即对象
类和对象的关系：每个对象都有一个类型，类是创建对象实例的模板，是对对象的抽象和概括，他包含对所创建对象的属性描述和行为特征的定义
类是实现面向对象的手段
声明类：使用class关键字来定义类
class 类名:
    属性名=属性值
    def 方法名(self)
    方法体
定义对象：ClassName(parameterlist)
'''

'''
#2、设计一个立方体类Box，定义三个属性，分别是长，宽，高。定义二个方法，分别计算并输出立方体的体积和表面积。
class Box:
    def __init__(self,l,x,h):
        self.l = l
        self.x = x
        self.h = h

    def tiji(self,l,x,h):
        tiji = l*x*h
        return tiji

    def baiomianji(self,l,x,h):
        biaomainji = (l*x+l*h+x*h)*2
        return biaomainji

box = Box(1,2,3)
print(box.tiji(3,3,3))
print(box.baiomianji(4,5,6))
'''

'''
#3、定义一个圆柱体类Cylinder，包含底面半径和高两个属性（数据成员）；包含一个可以计算圆柱体体积的方法
import math
class Cylinder:
    def __init__(self, r, h):
       self.r = r
       self.h = h
       
    def GetVolume(self):
        return math.pi * self.r**2 * self.h
 
if __name__=='__main__':
    r=eval(input()) #半径输入
    h=eval(input()) #高输入
    c=Cylinder(r,h) #创建Cylinder
    print('半径:%.2f,高:%.2f'%(c.r,c.h)) #半径和高
    print('体积:%.2f'%c.GetVolume()) #体积
'''


#4、随机定义一个类，类中包含2个类属性，两个方法，其中一个构造方法，一个实例方法。并实现类外添加类属性，修改类属性，类外添加实例属性，同时测试对类属性的修改。

#构造方法
class Person:
    def __init__(self,name="Dongying"):
        print("构造方法已被调用")
        self.name=name
    def getName(self):
        return self.name
    def setName(self,name):
        self.name=name
person=Person()
print(person.getName())
person1=Person(name="yingying")
print(person1.getName())
person1.setName(name="Dyy")
print(person1.getName())

#实例方法
class Person(object):
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def sing(self,song):
        print("%s正在唱%s"%(self.name,song))
p=Person('董莹莹',20)
p.sing('朋友')

#修改属性值
class MyClass:
    print("执行了 MyClass类")
    count =0
    def counter(self):
        self.count +=1

my =MyClass()
my.counter()
print(my.count)
my.counter()
print(my.count)
my.count ="313"
print(my.count)
my.name ="yingying"
print(my.name)
































